using Abp.Zero.EntityFrameworkCore;
using Vecen.BangChuang.Authorization.Roles;
using Vecen.BangChuang.Authorization.Users;
using Vecen.BangChuang.MultiTenancy;
using Microsoft.EntityFrameworkCore;
using Vecen.BangChuang.BangChuang.Agents;
using Vecen.BangChuang.BangChuang.Areas;
using Vecen.BangChuang.BangChuang.Classes;
using Vecen.BangChuang.BangChuang.Common;
using Vecen.BangChuang.BangChuang.Mall;
using Vecen.BangChuang.BangChuang.Pay;
using Vecen.BangChuang.BangChuang.Products;
using Vecen.BangChuang.BangChuang.Promotions;
using Vecen.BangChuang.BangChuang.Wallets;
using Vecen.BangChuang.Net.Sms;

namespace Vecen.BangChuang.EntityFrameworkCore {
    public class BangChuangDbContext: AbpZeroDbContext<Tenant, Role, User, BangChuangDbContext> {
        /* Define an IDbSet for each entity of the application */
        public virtual DbSet<City> Cities { get; set; }

        public virtual DbSet<Product> Products { get; set; }

        public virtual DbSet<Agent> Agents { get; set; }

        public virtual DbSet<AgentApply> AgentApplies { get; set; }

        public virtual DbSet<AgentClient> AgentClients { get; set; }
        public virtual DbSet<AgentProduct> AgentProducts { get; set; }

        public virtual DbSet<MicroClass> MicroClasses { get; set; }

        public virtual DbSet<ClassGroup> ClassGroups { get; set; }

        public virtual DbSet<Counter> Counters { get; set; }

        public virtual DbSet<Favorite> Favorites { get; set; }

        public virtual DbSet<Order> Orders { get; set; }

        public virtual DbSet<OrderItem> OrderItems { get; set; }

        public virtual DbSet<ShoppingCart> ShoppingCarts { get; set; }

        public virtual DbSet<UserAddress> UserAddresses { get; set; }
        public virtual DbSet<SearchRecord> SearchRecords { get; set; }

        public virtual DbSet<ProductCategory> ProductCategories { get; set; }

        public virtual DbSet<SmsMessage> SmsMessages { get; set; }

        public virtual DbSet<ChargeCredential> ChargeCredentials { get; set; }

        public virtual DbSet<ValidationCode> ValidationCodes { get; set; }

        public virtual DbSet<Attachment> Attachments { get; set; }

        public virtual DbSet<BankCard> BankCards { get; set; }

        public virtual DbSet<PointInfo> PointInfos { get; set; }

        public virtual DbSet<PointRecord> PointRecords { get; set; }

        public virtual DbSet<PointWithdraw> PointWithdraws { get; set; }

        public virtual DbSet<BankType> BankTypes { get; set; }


        public virtual DbSet<OrderPriceChange> OrderPriceChanges { get; set; }

        public virtual DbSet<OrderDeliveryInfo> OrderDeliveryInfos { get; set; }


        public virtual DbSet<OrderReturn> OrderReturns { get; set; }

        public virtual DbSet<PingppCallbackEvent> PingppCallbackEvents { get; set; }


        public virtual DbSet<Promotion> Promotions { get; set; }
        public BangChuangDbContext(DbContextOptions<BangChuangDbContext> options): base(options) { }

        protected override void OnModelCreating(ModelBuilder modelBuilder) {
            base.OnModelCreating(modelBuilder);

            //...
        }
    }
}